package com.yunzhou.mapper;

import com.yunzhou.entity.ForumArticle;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

@Mapper
public interface ForumArticleMapper {
    // 获取文章列表
    List<ForumArticle> getForumArticleList(
                @Param(value="boardId") Integer boardId,
                @Param(value="parentBoardId") Integer parentBoardId,
                @Param(value="boardName") String boardName,
                @Param(value="parentBoardName") String parentBoardName,
                @Param(value="orderType") Integer orderType,
                @Param(value="pageNum") Integer pageNum,
                @Param(value="pageSize") Integer pageSize);

    // 获取文章数
    Integer getForumArticleListTotal(Integer boardId, Integer parentBoardId, String boardName, String parentBoardName);

    // 根据文章ID获取文章
    ForumArticle getForumArticleByArticleId(Long articleId);

    // 更新文章阅读数
    Integer updateForumArticleReadCountByArticleId(Long articleId, Integer count);

    // 更新文章点赞数
    Integer updateForumArticleLikeCountByArticleId(Long articleId, Integer count);

    // 更新文章评论数
    Integer updateForumArticleCommentCountByArticleId(Long articleId, Integer count);

    // 新增文章
    void insert(ForumArticle forumArticle);

    // 更新文章
    void update(ForumArticle forumArticle);

    // 根据用户ID获取发表文章数
    Integer getPostCountByUserId(Long userId);

    // 根据用户ID获取发表文章
    List<ForumArticle> getForumArticleListByUserId(Long userId, Integer orderType, Integer pageNum, Integer pageSize);

    // 根据文章ID删除文章
    void deleteForumArticleByArticleId(Long articleId);

    // 获取热点文章
    List<ForumArticle> getHotArticle(@Param("dayParam") LocalDateTime dayParam);
}
